import { createSlice, PayloadAction } from '@reduxjs/toolkit';

// 定义用户信息的类型
interface User {
  id: string;
  username: string;
  email: string;
  // 可以根据需要添加其他字段
}

// 定义初始状态的类型
interface UserState {
  user: User | null; // 用户信息，可能为 null
  loading: boolean;   // 加载状态
  error: string | null; // 错误信息
}

// 定义初始状态
const initialState: UserState = {
  user: null,
  loading: false,
  error: null,
};

// 创建 slice
const userSlice = createSlice({
  name: 'user',
  initialState,
  reducers: {
    // 设置加载状态
    setLoading(state, action: PayloadAction<boolean>) {
      state.loading = action.payload;
    },
    // 设置用户信息
    setUser(state, action: PayloadAction<User | null>) {
      state.user = action.payload;
    },
    // 设置错误信息
    setError(state, action: PayloadAction<string | null>) {
      state.error = action.payload;
    },
  },
});

// 导出 actions
export const { setLoading, setUser, setError } = userSlice.actions;

// 导出 reducer
export default userSlice.reducer;
